// const  Http from '@/components/common/zhouWei-request/requestConfig';
// const Http = require('@/components/common/zhouWei-request/requestConfig')

import Http from '@/config/zhouWei-request/js_sdk/requestConfig.js';
import Utils from '@/config/utils.js'
import Store from '@/store/index.js'
import API from "@/config/API.js";


// <!-- -------------------  1.授权------------------- -->
// 0.手机号 授权
function authorTelInfo(telDic) {
	Utils.showLoadingNoLimitTime("授权中...")
	//  1.获取 code
	uni.login({
		provider: 'weixin',
		success: res => {
			if (res.code) {
				var url = API.wx_postLoginCode();

				var data = {
					js_code: res.code
				}
				Http
					.post(url, data)
					.then(res => {
						getSessionKey(telDic, res)
					})
					.catch(function(error) {
						//这里只会在接口是失败状态返回，不需要去处理错误提示
						console.log(error);
						Utils.hideLoading();
					});
			}
		},

		fail: res => {
			console.log(res);
		},
		complete: res => {
			console.log(res);
			Utils.hideLoading();
		}
	});
}

function getSessionKey(telDic, res) {
	var url = API.wx_postSessionKey();
	var data = {
		encryptedData: telDic.detail.encryptedData,
		iv: telDic.detail.iv,
		session_key: res.session_key,
		openid: res.openid,
	}
	Http
		.post(url, data)
		.then(res => {

			// 2.0 隐藏弹框
			Utils.hideLoading();

			Utils.showToast("授权完成！");
			let pages = getCurrentPages()
			let prevPage = pages[pages.length - 2];
			if(prevPage){
				prevPage.onLoad();
			}
			
			setTimeout(() => {
				// 2.1 存储 返回的信息
				uni.setStorageSync("token", res.userinfo.token);
				uni.setStorageSync("isAuthor", true);
				uni.setStorageSync("UserTel", res.userinfo.mobile);
				// 用户 ID 也是 分享的pid
				uni.setStorageSync("uid", res.userinfo.id);

				uni.navigateBack({
					delta: 0,
				})
			}, 1000);

		
			// 其他可能是否绑定过手机的 判定
			// isRegisterTel();

		})
		.catch(function(error) {
			//这里只会在接口是失败状态返回，不需要去处理错误提示
			console.log(error);
			Utils.showToast(error.msg)

		});
}

// 判定 绑定手机号 是否注册过
function isRegisterTel() {
	var url = API.wx_isBindPhone();
	var temPid = "0";
	if (uni.getStorageSync("pid")) {
		temPid = uni.getStorageSync("pid")
	}
	var temDic = uni.getStorageSync("UserDic");
	var data = {
		gender: temDic.gender,
		nickName: temDic.nickName,
		avatarUrl: temDic.avatarUrl,
		openid: temDic.openid,
		unionid: temDic.unionid,
		mobile: uni.getStorageSync('UserAuthorTelNum'),
		pid: temPid
	}
	Http
		.post(url, data)
		.then(res => {
			console.log(res)
			console.log("1");
			try {
				console.log("2")
				if (res.token) {
					console.log("3")
					saveLoginedInfo(res);
				}
			} catch (e) {
				console.log("4")
				if (res.data.code == 103) {
					console.log("5")
					// 特殊 判定 只针对于 小程序授权 里面特殊判定
					// 103 小程序端只授权头像昵称，后有在app端 绑定手机号以及微信登录， 然后 又再次 进入小程序 登录的操作
					// 让客户 重新 头像昵称 登录

					Utils.showToast("APP端已绑定手机号，请重新授权登录！")
					uni.removeStorageSync("UserInfoAuthor");
					var pages = getCurrentPages() //获取加载的页面
					var currentPage = pages[pages.length - 1];
					currentPage.onShow();
				}
			}



		})
		.catch(function(error) {
			//这里只会在接口是失败状态返回，不需要去处理错误提示
			console.log(error);


		});
}

// 2. 获取微信授权后 --- 进行有关 网络请求
function authorGetUserInfo() {

	// 2021.4.28 实施 新版授权
	if (uni.getUserProfile) {
		uni.getUserProfile({
			desc: '用于完善会员资料', // 声明获取用户个人信息后的用途，后续会展示在弹窗中，请谨慎填写
			success: (res) => {
				judgeGetTokenIsRegister(true, res);
			},
			fail: res => {
				console.log("获取用户信息失败", res)
			}
		})
	} else {
		judgeGetTokenIsRegister()
	}

}

function judgeGetTokenIsRegister(isNewAuthorType = false, userProfileDic) {
	Utils.showLoadingNoLimitTime("授权中...")
	//  1.获取 code
	uni.login({
		success: res => {
			var code = res.code;
			if (isNewAuthorType) {
				var temPid = "0";
				if (uni.getStorageSync("pid")) {
					temPid = uni.getStorageSync("pid")
				}

				var data = {
					code: code,
					encrypted_data: userProfileDic.encryptedData,
					iv: userProfileDic.iv,
					raw_data: userProfileDic.rawData,
					signature: userProfileDic.signature,
					mobile: uni.getStorageSync('UserAuthorTelNum'),
					pid: temPid
				}

				postAuthorInfo(data)
			} else {
				uni.getUserInfo({
					withCredentials: true,
					success: function(ress) {
						// 保存微信登录参数
						const {
							encryptedData,
							iv,
							signature,
							rawData
						} = res

						// 是否 有分享pid 判定
						var temPid = "0";
						if (uni.getStorageSync("pid")) {
							temPid = uni.getStorageSync("pid")
						}

						var data = {
							code: res.code,
							encrypted_data: ress.encryptedData,
							iv: ress.iv,
							signature: ress.signature,
							raw_data: ress.rawData,
							mobile: uni.getStorageSync('UserAuthorTelNum'),
							pid: temPid
						}

						postAuthorInfo(data)
					},
					fail: function(resssss) {
						console.log(resssss);
						Utils.hideLoading();
					}
				})
			}

		},
		fail(ress) {
			console.log(ress)
			Utils.hideLoading();
		}
	})
}


// 2.发送授权信息 给后台
function postAuthorInfo(data) {
	var url = API.wx_nickAuthor();
	Http
		.post(url, data)
		.then(res => {
			// 2.0 隐藏弹框
			Utils.hideLoading();
			// 特殊 判定 只针对于 小程序授权 里面特殊判定  102 没绑定手机号，进行手机授权
			if (res.code == 102) {
				uni.setStorageSync("UserDic", res.data);
				uni.setStorageSync("UserInfoAuthor", true);
				var pages = getCurrentPages() //获取加载的页面
				var currentPage = pages[pages.length - 1];
				currentPage.onShow();
			} else {
				saveLoginedInfo(res)
			}

		})
		.catch(function(error) {
			//这里只会在接口是失败状态返回，不需要去处理错误提示
			console.log(error);
			Utils.hideLoading();
		});
}

function saveLoginedInfo(res) {
	// 2.1 存储 返回的信息
	uni.setStorageSync("UserAuthorTelNum", res.user.mobile)

	Store.commit('login', {
		user: res.user,
		token: res.token
	});

	uni.navigateBack({})
}


// 1.只有 当前用户 普通用户 级别 才绑定上下级
function bindUpDowLevel(pid) {
	var url = API.postUpDownLevel();
	var data = {
		up_1l: pid
	};
	var getData = wxRequest.postRequest(url, data);
	getData.then(res => {
		if (res.data.code == 1) {
			console.log("绑定成功了" + pid)
		} else {
			console.log("绑定过了")
		}
	})

}
// <!-- -------------------  1.授权 end------------------- -->

// <!-- -------------------  10. 其他------------------- -->
// 10.1 分享
function comShare() {
	var url = API.wx_getShareImg();
	this.$http
		.get(url, {
			id: uni.getStorageSync('CurArticleID')
		})
		.then(res => {
			console.log("1111")
		})
		.catch(function(error) {
			//这里只会在接口是失败状态返回，不需要去处理错误提示
			console.log(error);
		});
}
// <!-- -------------------  10. 其他 end------------------- -->
//导出
module.exports = {
	// 1.手机号 授权
	authorTelInfo: authorTelInfo,

	// 2.头像昵称 授权
	authorGetUserInfo: authorGetUserInfo,

	// 1.分享
	comShare: comShare
}
